local CommonOHOH = _G.CommonOHOH;
local M = CommonOHOH.class.new(script, CommonOHOH.files.ModelObject());
local OrbitFolder=Instance.new("Folder",workspace)
local ConnectClass=_G.CommonOHOH.load.Connect();

OrbitFolder.Name="Orbit"
-- 轨道对象
function M.new(...)
	return M(...);
end;

--参数：管道模型,所属关卡对象
function M.ctor(self,model,level)--构造函数
  
	self.CreateNextOrbitEvent=ConnectClass.new() -- 触发生成下一条管道
    self.MineList={}
    self.Level=level --guand
    -- for _,p in pairs( model:GetDescendants()) do
    --     if p:IsA("BasePart") then
    --         p.Anchored=true
    --         p.CanTouch=false
    --         if p.Name=="Instance" then
    --             p.CanCollide=true
    --         elseif p.Name=="AirWall"  then
    --             p.CanCollide=true
    --         else
    --             p.Massless=true
    --             p.CanCollide=false
    --         end
    --     end
    -- end
    model.PrimaryPart=model:FindFirstChild("Instance")
    self.MineFolder=Instance.new("Folder",model)
    self.MineFolder.Name="Mine"
	M.super.ctor(self,model);
end;


function M.dtor(self)

    if  self.CreateNextOrbitEvent then
        self.CreateNextOrbitEvent:dtor()
        self.CreateNextOrbitEvent=nil
    end
    
	M.super.dtor(self);
end;


-- 加载矿石
function M.LoadMine(self)

    -- self.AllMineCount=#self.Slots --总的矿石数量
    -- self.NowMineCount= self.AllMineCount --当前矿石数量
    -- self.MineCondtion=self.AllMineCount/4 --低于该数量的矿石，会触发生成新的矿石管道
    -- if self.MineCondtion<5 then
    --     self.MineCondtion=5
    -- end


    -- for k,s in pairs(self.Slots) do
    --     local cf=s:GetPivot()
    --     local m= self.Level:CreateMine(self:GetSortId(),k) --创建矿石
    --     m:Installation(cf,self.MineFolder)
    --     local guid=m:GetGuid()
    --     m.DeadEvent:Connect(function()
    --         self.NowMineCount=self.NowMineCount-1
    --         if self.NowMineCount<= self.MineCondtion then
    --             self.CreateNextOrbitEvent:Action() --触发生成下一条管道
    --             self:AddProcess(function()
    --                  task.wait()
    --                  self.CreateNextOrbitEvent:dtor()
    --                  self.CreateNextOrbitEvent=nil
    --             end)
    --         end
    --         self.MineList[guid]=nil
    --     end)
    --     self.MineList[guid]=m
    -- end
   
    local startCF=self:GetMineCFrame()
    for i=1,100 do
        local cf=startCF-startCF.LookVector*(3*i-1)*30
        local m= self.Level:CreateMine() --创建矿石
        print("m",m)
        m:Installation(cf,self.MineFolder)
    end

end


--显示管道
function M.Show(self)
    self.main_inst.Parent=OrbitFolder
end


--安装，参数：安装位置
function M.Installation(self,cf)
    self:Show()
    self.main_inst:PivotTo(cf)
end

function M.GetMineCFrame(self)
    
    return self:WaitForChild_Check("Point.MineBorn").CFrame

end


function M.GetEndCFrame(self)
    return self:WaitForChild_Check("Point.End").CFrame
end

function M.GetLoopCFrame(self,last)
    return self:WaitForChild_Check("Point.LoopBorn").CFrame
end

-- 车的起始位置
function M.GetCarCFrame(self)
    return self:WaitForChild_Check("Point.CarBorn").CFrame
end


function M.GetInstance(self)
    return self.main_inst
end

return M